import request from "../../../utils/request"

Page({
  // 统一管理表单数据：所有输入、选择的值都存在formData中
  data: {
    userId: 0, // 用户id和创建人id
    formData: {
      name: '', // 预约人姓名
      phone: '', // 预约人手机号
      family: '', // 家人姓名
      selectedDate: '', // 预约日期
      selectedTime: '' // 预约时间
    },
    isSelect: 0, // 控制提交按钮样式（是否选中时间）
    today: '', // 今日日期（用于日期选择器start）
    timeSessions: [ // 时间时段数据（保留原结构）
      {
        sessionId: 'morning',
        sessionName: '上午8:00 - 12:00',
        times: [{
            id: 1,
            time: '08:00'
          }, {
            id: 2,
            time: '08:30'
          }, {
            id: 3,
            time: '09:00'
          },
          {
            id: 4,
            time: '09:30'
          }, {
            id: 5,
            time: '10:00'
          }, {
            id: 6,
            time: '10:30'
          },
          {
            id: 7,
            time: '11:00'
          }, {
            id: 8,
            time: '11:30'
          }, {
            id: 9,
            time: '12:00'
          }
        ]
      },
      {
        sessionId: 'afternoon',
        sessionName: '下午12:30 - 18:00',
        times: [{
            id: 10,
            time: '12:30'
          }, {
            id: 11,
            time: '13:00'
          }, {
            id: 12,
            time: '13:30'
          },
          {
            id: 13,
            time: '14:00'
          }, {
            id: 14,
            time: '14:30'
          }, {
            id: 15,
            time: '15:00'
          },
          {
            id: 16,
            time: '15:30'
          }, {
            id: 17,
            time: '16:30'
          }, {
            id: 18,
            time: '17:30'
          },
          {
            id: 19,
            time: '18:00'
          }
        ]
      }
    ],
    currentSession: 0 // 控制swiper当前显示的时段
  },

  // 返回上一页（保留原逻辑）
  toMy() {
    wx.navigateBack();
  },

  // 初始化日期（今日 + 默认选中今日）
  initDateAndTime() {
    const now = new Date();
    const formattedDate = this.formatDate(now);
    this.setData({
      today: formattedDate,
      'formData.selectedDate': formattedDate // 初始化预约日期为今日
    });
    this.updateTimeListAvailability(formattedDate); // 更新时间可用性
  },

  // 日期格式化（YYYY-MM-DD）
  formatDate(date) {
    const year = date.getFullYear();
    const month = (date.getMonth() + 1).toString().padStart(2, '0');
    const day = date.getDate().toString().padStart(2, '0');
    return `${year}-${month}-${day}`;
  },

  // 更新时间选项可用性（今日过滤已过时间）
  updateTimeListAvailability(selectedDateStr) {
    const todayStr = this.data.today;
    const isToday = selectedDateStr === todayStr;
    let updatedSessions = JSON.parse(JSON.stringify(this.data.timeSessions));

    if (isToday) {
      const now = new Date();
      const currentTotalMinutes = now.getHours() * 60 + now.getMinutes();
      // 时间转换为分钟数（如08:30 → 510分钟）
      const convertTimeToMinutes = (timeStr) => {
        const [hours, minutes] = timeStr.split(':').map(Number);
        return hours * 60 + minutes;
      };

      // 遍历时段，禁用已过时间
      updatedSessions.forEach(session => {
        session.times.forEach(timeObj => {
          timeObj.disabled = convertTimeToMinutes(timeObj.time) < currentTotalMinutes;
        });
      });
    } else {
      // 非今日，所有时间可用
      updatedSessions.forEach(session => {
        session.times.forEach(timeObj => {
          timeObj.disabled = false;
        });
      });
      // 清空之前的时间选择
      this.setData({
        'formData.selectedTime': '',
        isSelect: 0
      });
    }

    this.setData({
      timeSessions: updatedSessions
    });
  },

  // 日期选择器变化（更新formData中的selectedDate）
  onDateChange(e) {
    const newSelectedDate = e.detail.value;
    this.setData({
      'formData.selectedDate': newSelectedDate,
      currentSession: 0 // 切换日期后默认显示第一个时段
    });
    this.updateTimeListAvailability(newSelectedDate);
  },

  // 选择具体时间（更新formData中的selectedTime）
  onSelectTime(e) {
    const selectedTime = e.currentTarget.dataset.time;
    const isDisabled = e.currentTarget.dataset.disabled;

    if (isDisabled) return; // 禁用时间不处理

    // 切换选中/取消选中
    if (this.data.formData.selectedTime === selectedTime) {
      this.setData({
        'formData.selectedTime': '',
        isSelect: 0
      });
    } else {
      this.setData({
        'formData.selectedTime': selectedTime,
        isSelect: 1
      });
    }
  },

  // 时段标签点击（切换swiper）
  onTabClick(e) {
    this.setData({
      currentSession: e.currentTarget.dataset.index
    });
  },

  // swiper滑动（同步标签高亮）
  onSwiperChange(e) {
    console.log('Swiper 切换到索引:', e.detail.current);
    this.setData({
      currentSession: e.detail.current
    });
  },

// 统一表单提交（核心：所有校验和逻辑在此处理）
formSubmit(e) {
  // 1. 获取表单所有输入值（e.detail.value包含所有name对应的字段）
  const { name, phone, family } = e.detail.value;
  // 2. 获取表单中选择的日期和时间（存在formData中）
  const { selectedDate, selectedTime } = this.data.formData;
  // 3. 获取当前登录用户ID（页面onLoad时已从缓存获取到userId）
  const { userId } = this.data;

  // ---------------------- 原有校验逻辑保持不变 ----------------------
  // 校验姓名（非空，去除空格）
  if (!name.trim()) {
    wx.showToast({ title: '请输入预约人姓名', icon: 'none' });
    return;
  }
  // 校验手机号（非空 + 11位纯数字）
  if (!phone.trim()) {
    wx.showToast({ title: '请输入预约人手机号', icon: 'none' });
    return;
  }
  const phoneReg = /^1[3-9]\d{9}$/;
  if (!phoneReg.test(phone.trim())) {
    wx.showToast({ title: '请输入正确的11位手机号', icon: 'none' });
    return;
  }
  // 校验预约时间
  if (!selectedTime) {
    wx.showToast({ title: '请选择预约时间段', icon: 'none' });
    return;
  }

  // ---------------------- 新增：整理提交到数据库的数据 ----------------------
  const submitData = {
    appointmentType: "参观预约", // 固定值
    wxUserId: userId, // 当前登录用户ID（外键）
    applicantName: name.trim(), // 表单收集的姓名
    phone: phone.trim(), // 表单收集的手机号
    elderlyId: null, // 暂未收集，设为null（可根据实际需求调整）
    appointmentTime: `${selectedDate} ${selectedTime}:00`, // 拼接预约时间（如：2024-10-23 09:30）
    creator: userId, // 创建人=当前登录用户ID
    status: "待上门", // 固定值
    arrivalTime: null, // 未到院，设为null  
    extraField1: family.trim() || "", // 可将“家人姓名”存入额外字段1（灵活利用）
    extraField2: "" // 额外字段2（未使用，可留空）
  };

  // ---------------------- 新增：发起添加数据的请求 ----------------------
  request({
    url: '/commanage/yuyue', 
    method: 'POST',
    data: submitData, 
    success: (res) => {
      // 请求成功处理（根据后端返回格式调整）
      if (res.data.code === 200 || res.data.success) {
        wx.showToast({ title: '预约提交成功', icon: 'success', duration: 1500 });
        // 可添加“提交成功后跳转页面”的逻辑（如返回我的预约列表）
        setTimeout(() => {
          wx.navigateBack(); // 1.5秒后返回上一页
        }, 1500);
      } else {
        // 后端返回失败（如预约时间已被占用）
        wx.showToast({ title: res.data.msg || '提交失败，请重试', icon: 'none' });
      }
    },
    fail: (err) => {
      // 请求失败处理（如网络错误）
      console.error('预约请求失败：', err);
      wx.showToast({ title: '网络异常，请检查网络', icon: 'none' });
    }
  });

},

  // 页面加载时初始化日期
  onLoad() {
    this.initDateAndTime();
    const userInfo = wx.getStorageSync('loginUserInfo');
    console.log(userInfo.userId);
    this.setData({
      userId:userInfo.userId
    })

  },
})